﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using Model;

namespace Controller
{
    public class cntrEndereco
    {
        public cntrEndereco()
        {
        }

        Endereco objEndereco;

        #region Salvar
        public string Save(DS_Lawyer.EnderecoRow pEndereco)
        {
            
            if (pEndereco.idEndereco == string.Empty)
            {
                this.objEndereco = new Endereco();
                this.objEndereco.IdEndereco = System.Guid.NewGuid().ToString();
                this.objEndereco.Logradouro = pEndereco.logradouro;
                this.objEndereco.Cep = pEndereco.cep;
                this.objEndereco.Complemento = pEndereco.complemento;
                this.objEndereco.Numero = pEndereco.numero;
                this.objEndereco.Bairro = pEndereco.bairro;
                this.objEndereco.Uf = Uf.RetriveObject(pEndereco.idUf);
                this.objEndereco.Cidade = Cidade.RetriveObject(pEndereco.idCidade);     

                try
                {
                    this.objEndereco.Persist();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                this.objEndereco = Endereco.RetriveObject(pEndereco.idEndereco);
                this.objEndereco.Logradouro = pEndereco.logradouro;
                this.objEndereco.Cep = pEndereco.cep;
                this.objEndereco.Complemento = pEndereco.complemento;
                this.objEndereco.Numero = pEndereco.numero;
                this.objEndereco.Bairro = pEndereco.bairro;
                this.objEndereco.Uf = Uf.RetriveObject(pEndereco.idUf);
                this.objEndereco.Cidade = Cidade.RetriveObject(pEndereco.idCidade);     

                try
                {
                    this.objEndereco.Update();
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }
            return this.objEndereco.IdEndereco;
        }
        #endregion

        #region Select

        #region SelecByID
        public DS_Lawyer.EnderecoRow Select(string pID)
        {
            DS_Lawyer.EnderecoDataTable dtEndereco = new DS_Lawyer.EnderecoDataTable();
            DS_Lawyer.EnderecoRow rowEndereco = dtEndereco.NewEnderecoRow();

            try
            {
                this.objEndereco = Endereco.RetriveObject(pID);
                rowEndereco.idEndereco = pID;
                rowEndereco.idCidade = objEndereco.Cidade.IdCidade;
                rowEndereco.idUf = objEndereco.Uf.IdUF;
                rowEndereco.logradouro = objEndereco.Logradouro;
                rowEndereco.numero = objEndereco.Numero;
                rowEndereco.bairro = objEndereco.Bairro;
                rowEndereco.cep = objEndereco.Cep;
                rowEndereco.complemento = objEndereco.Complemento;


            }
            catch (Exception ex)
            {

                throw ex;
            }

            return rowEndereco;
        }
        #endregion

        public static DS_Lawyer.EnderecoDataTable Select()
        {
            DS_Lawyer.EnderecoDataTable dtEndereco = new DS_Lawyer.EnderecoDataTable();
            try
            {
                IList lisEnderecos = Endereco.RetriveObjects();
                for (int i = 0; i < lisEnderecos.Count; i++)
                {
                    Endereco objEndereco = (Endereco)lisEnderecos[i];
                    dtEndereco.AddEnderecoRow(objEndereco.IdEndereco, objEndereco.Logradouro,
                        objEndereco.Complemento, objEndereco.Cep, objEndereco.Numero, objEndereco.Bairro,
                        objEndereco.Uf.IdUF, objEndereco.Cidade.IdCidade);
                }
            }
            catch (Exception ex)
            {
                //Tratar mensagem de erro aqui!
                throw ex;

            }
            return dtEndereco;
        }
        #endregion
    }
}
